package com.company.string;

import java.util.*;

/**
 * @author jrue
 * @description https://leetcode-cn.com/problems/uncommon-words-from-two-sentences/
 * @date 2019/11/15 17:16
 * 给定两个句子 A 和 B 。 （句子是一串由空格分隔的单词。每个单词仅由小写字母组成。）
 *
 * 如果一个单词在其中一个句子中只出现一次，在另一个句子中却没有出现，那么这个单词就是不常见的。
 *
 * 返回所有不常用单词的列表。
 *
 * 您可以按任何顺序返回列表。
 */
public class UncommonFromSentences {

    public static void main(String[] args) {
        String[] uncommon = uncommonFromSentences("apple apple", "banana");
        for (String s : uncommon) {
            System.out.println(s);
        }
    }

    public static String[] uncommonFromSentences(String A, String B) {
        if (A.length() == 0 && B.length() == 0) return new String[]{};
        String[] splitA = A.split(" ");
        String[] splitB = B.split(" ");
        Map<String,Integer> map = new HashMap<>();

        for (String s : splitA) {
            map.put(s,map.getOrDefault(s,0) + 1);
        }

        for (String s : splitB) {
            map.put(s, map.getOrDefault(s, 0) + 1);
        }


        ArrayList<String> strings = new ArrayList<>();

        map.forEach((k,v) -> {
            if (v.equals(1)) strings.add(k);
        });
        String[] res = new String[strings.size()];
        strings.toArray(res);
        return res;
    }

}
